1. Technical Field
The present invention relates generally to file management during initialization of a computer in a distributed computing environment.
2. Description of the Related Art
A common distributed computer environment comprises a plurality of clients connected to one or more servers. Each client may be a diskless or so-called xe2x80x9cthinxe2x80x9d network computer that is designed to receive a download of an operating system kernel upon initiation of a boot sequence. As the client machine initializes, its BIOS makes a request for a boot sector. Depending on the hardware installed, the request is intercepted by code (e.g., DHCP/PXE or RIPL) on a network adapter, which then downloads a boot loader and a mini file system driver (or xe2x80x9cmini-FSDxe2x80x9d). The mini-FSD is a small network file system driver that consumes very few system resources. It is used to manage file requests (e.g., read, open, close, etc.) during the boot sequence. Once downloaded, the boot loader takes over the boot sequence, using the mini-FSD for support, until the operating system kernel is fully loaded. When the kernel has loaded, the mini-FSD is no longer used as the client then has full access to the network file system.
Typically, the boot loader uses a simple protocol (e.g., TFTP) to control the mini-FSD. During the initial boot phase, the mini-FSD must honor requests to open, read, and close files and/or devices that are actually being managed by an efficient, powerful server file system (e.g., NTFS or HPFS396). Theoretically, the network mini-FSD could issue direct requests to the server""s network file system using high performance traditional network file system protocols (such as SMB/CIFS, NFS, DFS or proprietary LAN protocols) provided by the server. In practice, however, it is very expensive to do so in terms of memory, time, and protocol support. Furthermore, the network adapter support services (e.g., the preboot extensions built into most current x86 motherboards) do not coexist well with the operating system that is attempting to initialize due to interrupt conflicts, DMA conflicts, and the like. Therefore, in this example, using the native protocol of the server has many disadvantages. Moreover, use of TFTP alone does not solve the problem either, and its performance is unacceptable. Primarily, this is because the network adapter has a primitive set of services, and these services compete for resources as control is being transferred to the full file system. This competition creates instabilities.
Thus, there is a need to provide a mechanism for honoring file system requests during the boot sequence that overcomes these and other deficiencies of the prior art.
It is an object of the present invention to provide a mechanism by which a first file system does certain work for a second file system, and this work is then inherited by the second file system. In a preferred embodiment, the first file system is a mini file system driver and the second file system is a file system driver.
Another object of the present invention is to enable files to be left open across a pair of file systems so that a second file system can take over for a first file system as if the second system had been managing the files.
It is a more specific object of this invention to enable a mini file system driver (mini-FSD) to perform given file operations during a boot sequence and have a network file system inherit information about those operations as the boot sequence is completed.
A still further object of the invention is to provide a cross file system caching and file synchronization mechanism for a boot service.
A more general object of this invention is to provide given file operations that are managed across a pair of file systems.
Still another general object is to provide an inter-file system mechanism for honoring file system requests during a network computer boot sequence.
According to the present invention, during a boot sequence (or upon restart of the computer following a partial network failure), a file system driver (e.g., a mini-FSD) caches files that are needed prior to the time at which a primary file system (e.g., a network file system) is operational. The file data is cached, together with information needed to manage these files, as the first file system driver operates during an initial portion of the boot sequence. Later in the sequence, when the primary file system is operational, it inherits the file information from the file system driver. Thereafter, the primary file system synchronizes the updated files.
Thus, during the boot process, files necessary to boot a client machine are loaded and cached. The file system driver inherits these cached files and performs given file operations on them. Thus, for example, on a file open, the file system driver first searches for a path/filename in the cached files. If the file is not cached, the file system driver returns a xe2x80x9cfile not foundxe2x80x9d error. If the file is found, the driver checks for other error conditions (sharing violations, permissions, or the like) based on the information stored with each cached file. If no errors are detected, the file system driver stores the open information and returns a success indication.
When the primary file system initializes, it xe2x80x9cinheritsxe2x80x9d the file information from the first file system. The primary file system then synchronizes the file updates.
The foregoing has outlined some of the more pertinent objects and features of the present invention. These objects should be construed to be merely illustrative of some of the more prominent features and applications of the invention. Many other beneficial results can be attained by applying the disclosed invention in a different manner or modifying the invention as will be described. Accordingly, other objects and a fuller understanding of the invention may be had by referring to the following Detailed Description of the Preferred Embodiment.